// Copyright 2022 Linkall Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package testing

const (
	EntrySize0     = 112 // 12+4+8+6*8+8+16+8+8
	EntrySize1     = 456 // 12+4+8+10*8+8*16+8+16+8+8+16+16+8+8*8+7*8+16+8
	EndEntrySize   = 40  // 12+4+8+2*8
	IndexEntrySize = 64  // 12+4+24+24

	EntryOffset0     int64 = 4096
	EntryOffset1     int64 = EntryOffset0 + EntrySize0
	EndEntryOffset   int64 = EntryOffset1 + EntrySize1
	IndexEntryOffset int64 = EndEntryOffset + EndEntrySize
)

var (
	EntryData0 = []byte{
		0x70, 0x00, 0x00, 0x00, // length
		0x63, 0x65, // type
		0x04, 0x00, // offset
		0x00, 0x00, // ext count
		0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, // non-null bitmap
		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // seq num
		0xF3, 0x6B, 0xE7, 0xD2, 0x82, 0x01, 0x00, 0x00, // stime
		0x06, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, // id
		0x09, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, // source
		0x03, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, // spec version
		0x07, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, // type
		byte('c'), byte('e'), byte('-'), byte('i'), byte('d'), byte('0'), 0x00, 0x00, // id
		byte('c'), byte('e'), byte('-'), byte('s'), byte('o'), byte('u'), byte('r'), byte('c'),
		byte('e'), 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // source
		byte('1'), byte('.'), byte('0'), 0x00, 0x00, 0x00, 0x00, 0x00, // spec version
		byte('c'), byte('e'), byte('-'), byte('t'), byte('y'), byte('p'), byte('e'), 0x00, // type
		0x70, 0x00, 0x00, 0x00, // length
		0x26, 0x4E, 0xFB, 0x6B, // crc32
	}
	EntryData1 = []byte{
		0xC8, 0x01, 0x00, 0x00, // length
		0x63, 0x65, // type
		0x04, 0x00, // offset
		0x08, 0x00, // ext count
		0xFF, 0x06, 0x00, 0x00, 0x00, 0x00, // non-null bitmap
		0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // seq num
		0xF3, 0x6B, 0xE7, 0xD2, 0x82, 0x01, 0x00, 0x00, // stime
		0x06, 0x00, 0x00, 0x00, 0xD8, 0x00, 0x00, 0x00, // id
		0x09, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, // source
		0x03, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, // spec version
		0x07, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, // type
		0x07, 0x00, 0x00, 0x00, 0xB0, 0x01, 0x00, 0x00, // data
		0x0A, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // data content type
		0x0A, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, // subject
		0x01, 0x02, 0x03, 0x04, 0x20, 0x01, 0x00, 0x00, // time
		0x05, 0x00, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00, // attr0
		0x01, 0x00, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, // value0
		0x05, 0x00, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00, // attr1
		0x01, 0x00, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, // value1
		0x05, 0x00, 0x00, 0x00, 0x38, 0x01, 0x00, 0x00, // attr2
		0x05, 0x00, 0x00, 0x00, 0x78, 0x01, 0x00, 0x00, // value2
		0x05, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, // attr3
		0x07, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, // value3
		0x05, 0x00, 0x00, 0x00, 0x48, 0x01, 0x00, 0x00, // attr4
		0x07, 0x00, 0x00, 0x00, 0x88, 0x01, 0x00, 0x00, // value4
		0x05, 0x00, 0x00, 0x00, 0x50, 0x01, 0x00, 0x00, // attr5
		0x07, 0x00, 0x00, 0x00, 0x90, 0x01, 0x00, 0x00, // value5
		0x05, 0x00, 0x00, 0x00, 0x58, 0x01, 0x00, 0x00, // attr6
		0x07, 0x00, 0x00, 0x00, 0x98, 0x01, 0x00, 0x00, // value6
		0x05, 0x00, 0x00, 0x00, 0x60, 0x01, 0x00, 0x00, // attr7
		0x0D, 0x00, 0x00, 0x00, 0xA0, 0x01, 0x00, 0x00, // value7
		byte('c'), byte('e'), byte('-'), byte('i'), byte('d'), byte('1'), 0x00, 0x00, // id
		byte('c'), byte('e'), byte('-'), byte('s'), byte('o'), byte('u'), byte('r'), byte('c'),
		byte('e'), 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // source
		byte('1'), byte('.'), byte('0'), 0x00, 0x00, 0x00, 0x00, 0x00, // spec version
		byte('c'), byte('e'), byte('-'), byte('t'), byte('y'), byte('p'), byte('e'), 0x00, // type
		byte('t'), byte('e'), byte('x'), byte('t'), byte('/'), byte('p'), byte('l'), byte('a'),
		byte('i'), byte('n'), 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // data content type
		byte('c'), byte('e'), byte('-'), byte('s'), byte('u'), byte('b'), byte('j'), byte('e'),
		byte('c'), byte('t'), 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // subject
		0x2E, 0xE3, 0x06, 0x63, 0x00, 0x00, 0x00, 0x00, // time
		byte('a'), byte('t'), byte('t'), byte('r'), byte('0'), 0x00, 0x00, 0x00, // attr0
		byte('a'), byte('t'), byte('t'), byte('r'), byte('1'), 0x00, 0x00, 0x00, // attr1
		byte('a'), byte('t'), byte('t'), byte('r'), byte('2'), 0x00, 0x00, 0x00, // attr2
		byte('a'), byte('t'), byte('t'), byte('r'), byte('3'), 0x00, 0x00, 0x00, // attr3
		byte('a'), byte('t'), byte('t'), byte('r'), byte('4'), 0x00, 0x00, 0x00, // attr4
		byte('a'), byte('t'), byte('t'), byte('r'), byte('5'), 0x00, 0x00, 0x00, // attr5
		byte('a'), byte('t'), byte('t'), byte('r'), byte('6'), 0x00, 0x00, 0x00, // attr6
		byte('a'), byte('t'), byte('t'), byte('r'), byte('7'), 0x00, 0x00, 0x00, // attr7
		0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // value0
		0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // value1
		0x78, 0x56, 0x34, 0x12, 0x03, 0x00, 0x00, 0x00, // value2
		byte('v'), byte('a'), byte('l'), byte('u'), byte('e'), byte('3'), 0x04, 0x00, // value3
		byte('v'), byte('a'), byte('l'), byte('u'), byte('e'), byte('4'), 0x05, 0x00, // value4
		byte('v'), byte('a'), byte('l'), byte('u'), byte('e'), byte('5'), 0x06, 0x00, // value5
		byte('v'), byte('a'), byte('l'), byte('u'), byte('e'), byte('6'), 0x07, 0x00, // value6
		0x2E, 0xE3, 0x06, 0x63, 0x00, 0x00, 0x00, 0x00,
		0x01, 0x02, 0x03, 0x04, 0x08, 0x00, 0x00, 0x00, // value7
		byte('c'), byte('e'), byte('-'), byte('d'), byte('a'), byte('t'), byte('a'), 0x00, // data
		0xC8, 0x01, 0x00, 0x00, // length
		0xD2, 0xB2, 0x7F, 0x02, // crc32
	}
	EndEntryData = []byte{
		0x28, 0x00, 0x00, 0x00, // length
		0x65, 0x64, // type
		0x04, 0x00, // offset
		0x00, 0x00, // ext count
		0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // non-null bitmap
		0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // seq num
		0xF3, 0x6B, 0xE7, 0xD2, 0x82, 0x01, 0x00, 0x00, // stime
		0x28, 0x00, 0x00, 0x00, // length
		0xD8, 0xF4, 0x9F, 0xDD, // crc32
	}
	IndexEntryData = []byte{
		0x40, 0x00, 0x00, 0x00, // length
		0x64, 0x78, // type
		0x04, 0x00, // offset
		0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // offset
		0x70, 0x00, 0x00, 0x00, // length
		0x00, 0x00, 0x00, 0x00, // reserved
		0xF3, 0x6B, 0xE7, 0xD2, 0x82, 0x01, 0x00, 0x00, // stime
		0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // offset
		0xC8, 0x01, 0x00, 0x00, // length
		0x00, 0x00, 0x00, 0x00, // reserved
		0xF3, 0x6B, 0xE7, 0xD2, 0x82, 0x01, 0x00, 0x00, // stime
		0x40, 0x00, 0x00, 0x00, // length
		0x99, 0xAB, 0xFA, 0x75, // crc32
	}
	ArchivedHeaderData = []byte{
		0x76, 0x73, 0x62, 0x00, // magic
		0xCB, 0xC1, 0x84, 0x7A, // crc
		0x00, 0x00, 0x00, 0x00, // flags
		0x00, 0x00, 0x00, 0x00, // break flags
		0x00, 0x10, 0x00, 0x00, // data offset
		0x01,       // state
		0x00,       // reversed
		0x18, 0x00, // index size
		0x38, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // capacity
		0x38, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // entry length
		0x02, 0x00, 0x00, 0x00, // entry num
		0x28, 0x00, // index offset
	}
	EmptyHeaderData = []byte{
		0x76, 0x73, 0x62, 0x00, // magic
		0x45, 0xC8, 0xAA, 0xA2, // crc
		0x00, 0x00, 0x00, 0x00, // flags
		0x00, 0x00, 0x00, 0x00, // break flags
		0x00, 0x10, 0x00, 0x00, // data offset
		0x00,       // state
		0x00,       // reversed
		0x18, 0x00, // index size
		0x38, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // capacity
		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // entry length
		0x00, 0x00, 0x00, 0x00, // entry num
		0x00, 0x00, // index offset
	}
)
